ホームに戻る
出典 :
WPF再描画のためのDoEventsメソッド - GitHub コントロールを明示的に更新する - WPFアプリケーションでのApplication.DoEvents の実装 : WPF | iPentec Refresh、Update、Invalidateメソッドの違い - .NET Tips (VB.NET,C#...) : dobon.net
関連 :
[WPF]UIスレッド外からのUIの操作
目次 :

※ この記事は書きかけです。内容は正確ではありません。

WPFアプリケーションにおけるコントロールの再描画

Windows Formsでは Refresh() メソッドでコントロールを再描画することができたが、WPFでは同様のメソッドは標準実装されていない。
コントロールを再描画するには以下のような処理を実装する必要がある。
using System.Windows.Threading; public class HogeWindow { : /// <summary> /// 現在メッセージ待ち行列の中にある全てのUIメッセージを処理します。 /// </summary> private void DoEvents() { DispatcherFrame frame = new DispatcherFrame(); var callback = new DispatcherOperationCallback(obj => { ((DispatcherFrame)obj).Continue = false; return null; }); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, callback, frame); Dispatcher.PushFrame(frame); } : }
ウィンドウを更新する場合は、上記の DoEvents() メソッドをコールし、キューイングされたUIメッセージを処理するとよい。